package com.suning.sawp.intf.dao.coupon;

import java.util.List;

import com.suning.sawp.dto.promotion.CouponRecordStatis;
import com.suning.sawp.dto.promotion.InCouponRecord;
import com.suning.sawp.dto.promotion.InnerCouponBlackList;
import com.suning.sawp.po.promotion.CouponBlackList;
import com.suning.sawp.po.promotion.InnerCouponRecord;

/**
 * 
 * 内部优惠券dao层<br>
 * 〈功能详细描述〉
 * 
 * @author Wuxiao
 * @see [相关类/方法]（可选）
 * @since [产品/模块版本] （可选）
 */
public interface InnerCouponDaoService {

    /**
     * 
     * 功能描述: 查询当月已发次数<br>
     * 〈功能详细描述〉
     * 
     * @param staffId
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    int querySendTimesByMonth(String staffId);

    /**
     * 
     * 功能描述: 增加发券记录<br>
     * 〈功能详细描述〉
     * 
     * @param couponRecord
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    int addRecord(InnerCouponRecord couponRecord);

    /**
     * 
     * 功能描述: 查询券记录列表<br>
     * 〈功能详细描述〉
     * 
     * @param staffId
     * @param pageNo
     * @param pageSize
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    List<InCouponRecord> queryRecord(String staffId, Integer pageNo, Integer pageSize);
    /**
     * 
     * 功能描述: 查询发券记录<br>
     * 〈功能详细描述〉
     *
     * @param staffId
     * @param startTime
     * @param endTime
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    List<InnerCouponRecord> queryRecordByCon(String staffId,String startTime,String endTime,Integer index,Integer limit);
    /**
     * 
     * 功能描述: 查询券记录数量<br>
     * 〈功能详细描述〉
     * 
     * @param staffId
     * @param pageNo
     * @param pageSize
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    int queryRecordCount(String staffId);
    
    /**
     * 
     * 功能描述: 查询券记录数量<br>
     * 〈功能详细描述〉
     * 
     * @param staffId
     * @param pageNo
     * @param pageSize
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    int queryRecordCountByCon(String staffId,String startTime,String endTime);

    /**
     * 
     * 功能描述: 查询券记录详情<br>
     * 〈功能详细描述〉
     * 
     * @param staffId
     * @param activityId
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    List<InnerCouponRecord> queryCouponDetailByActivityId(String staffId, String activityId);

    /**
     * 
     * 功能描述: 查询黑名单<br>
     * 〈功能详细描述〉
     * 
     * @param staffId
     * @param pageSize
     * @param pageNo
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    List<InnerCouponBlackList> queryBlackList(String staffId, Integer pageSize, Integer pageNo);

    /**
     * 
     * 功能描述:查询黑名单数量 <br>
     * 〈功能详细描述〉
     * 
     * @param staffId
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    int queryBlackListCount(String staffId);

    /**
     * 
     * 功能描述: 增加黑名单<br>
     * 〈功能详细描述〉
     * 
     * @param couponBlackList
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    void addBlack(CouponBlackList couponBlackList);

    /**
     * 功能描述:删除黑名单 <br>
     * 〈功能详细描述〉
     * 
     * @param staffId
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    void delBlack(String staffId);

    /**
     * 
     * 功能描述: 后台查询发全记录统计<br>
     * 〈功能详细描述〉
     * 
     * @param staffId
     * @param startTime
     * @param endTime
     * @param pageSize
     * @param pageNo
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    List<CouponRecordStatis> queryCouponStatis(String staffId, String startTime, String endTime,
            Integer pageSize, Integer pageNo);
    /**
     * 
     * 功能描述: 后台查询发全记录统计数量<br>
     * 〈功能详细描述〉
     *
     * @param staffId
     * @param startTime
     * @param endTime
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    int queryCouponStatisCount(String staffId, String startTime, String endTime);
    /**
     * 
     * 功能描述: 根据Id更新用券规则<br>
     * 〈功能详细描述〉
     *
     * @param couponRule
     * @param Id
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    void updateCouponRuleById(String couponRule,Integer Id);
}
